SView for Windows Control提供了OCX控件, 支持通过IE 、Office 、Visual Studio 开发工具进行OCX控件集成,控件集成方便快捷,可以直接在开发工具中控制控件的大小、位置,调用控件中方法,满足不同环境下的需求和使用。文档主要介绍在开发工具中集成SView for Windows Control控件的具体流程。SView for Windows Control控件中接口方法的介绍请查看SView for Windows Control API文档。
SView for Windows Control的OCX控件集成需要的环境:
  • 运行环境:.Net Framework 4.0。
  • 系统环境: Windows XP SP3 以上。
  • 最新版本的SView for Windows浏览器OCX控件。
嵌入IE浏览器
SView for Windows Control的OCX控件集成需要的环境:
  • 通过设置HTML文件中<OBJECT>标签来创建加载SView for Windows Control控件,具体可见下面列子:
  • <OBJECT ID="SViewWinOCX" name="SViewWinOCX" WIDTH=600 HEIGHT=600 CLASSID="CLSID:D638AE41-848A-4B29-A8CB-579AADA90835"></OBJECT>
  • ID为控件名称,CLASSID为控件信息类中的uuid。OCX控件的ID名称为:"SViewWinOCX",CLASSID为:"CLSID:D638AE41-848A-4B29-A8CB-579AADA90835",name为:"SViewWinOCX"。
嵌入Office
以嵌入Word(Microsoft Office 2013)为例进行说明:
  • 新建或打开需要嵌入的Word,单击【文件】—【选项】—【自定义功能区】,调出“开发工具”。
  • Word工具栏中选择【设计模式】,单击【旧式工具】—【其他控件】。
  • 选中打开控件选择窗口,找到SViewControl Control点击确定。
  • 在Word中出现一个矩形框,可用鼠标拖动来调节控件大小。
  • 再次点击【设计模式】,退出。
  • 完成OCX控件的嵌入。
嵌入Visual Studio
  • 在Visual Studio的窗体设计模式下,打开工具箱面板,在“常规”项下右键选择“选择项”。
  • 选择“COM组件”选项卡,找到SViewControl Control项,选择后点击确定。
  • 常规选项下会出现SViewControl Control控件,将控件拖入窗体即可。
调用方法
在IE浏览器中调用OCX控件方法:
  • 以SView for Windows Control API接口文档中打开本地文件接口:Open(SHORT viewID,BSTR fileUris) 为例。
  • 在HTML中使用方法为:SViewWinOCX.Open(0,"D:\\1.svlx")。
  • SViewWinOCX为控件名称(SView for Windows Control的控件名称)。
  • Open为控件提供的接口方法。
在Office的Word中设置OCX控件属性:
  • 以SView for Windows Control API接口文档中设置属性打开文件:Src value:"svlPath"为例。
  • 在Word中选中设计模式按钮,在OCX控件内右键选择属性按钮,设置Src属性的值为模型路径,取消设计模式按钮,即可执行。
在Visual Studio调用OCX控件方法:
  • 在VS工程中加载了OCX控件的界面调用方法为:SViewWinOCX.Open(0,"D:\\1.svlx")
  • SViewWinOCX为控件名称(SView for Windows Control的控件名称)。
  • Open为控件提供的接口方法。
SView for Windows Control控件中其他接口方法的介绍请查看SView for Windows Control API文档
通过对拾取、预选及创建等相关接口的组合,实现快速测量尺寸,提高测量的易用性及用户体验;
  • 使用拾取器(或自定义拾取器)调用拾取接口传递坐标值,获取拾取到的特征点、线、面等对象;
  • 记录拾取到的对象并设置预选状态;
  • 使用类型及关系判断相关接口,确定对象之间的关系;
  • 调用对应的距离或角度测量接口创建测量对象;
预显
  • 根据传递的坐标值(x,y)获取拾取到的特征点、线、面等对象
  • 设置拾取到的对象的预选状态
//获取拾取对象(GetPickShape(x,y))
//1、根据拾取器坐标获取拾取到的对象集
Dictionary<ShapeType, SShape> pickShape = smartMeasureFactory.GetPickShape(x, y);
//2、根据拾取优先级获取拾取到的对象
 SShape sshape = null;
 foreach (var item in  smartMeasureFactory.GetPickTypes()) {
    dicPickShape.TryGetValue(item, out sshape);
     if (sshape != null)
     {
       return sshape;
      }
}
3、设置预选状态
 smartMeasureFactory.preView(sShape, true);
                        
关系判断
  • 线、面对象的类型判断详见 SView for Windows Control API
  • 两个对象之间的关系判断(如两直线之间的平行、相交等关系)。
//例 判断两直线是否平行
1、记录拾取到的线对象;
SLine firstLineShape = GetPickShape( x,  y);
SLine secondLineShape = GetPickShape( x,  y);
2、判断拾取对象关系
//是否平行
bool isParallel = smartMeasureFactory.IsParallel(firstLineShape, secondLineShape);
                        
距离测量
  • 根据传递的坐标值(x,y)获取拾取到的特征点、线、面等对象
  • 记录并设置拾取到的对象的预选状态
  • 根据拾取到的对象类型执行距离测量
//例 点线距离测量
1、记录拾取到的点、线对象;
SPoint pntShape = GetPickShape( x,  y);
SLine lineShape = GetPickShape( x,  y);
2、执行距离测量,如果满足是弧线,则进行点到弧线圆心的距离测量
//判断是否是圆弧线
bool isCircleLine = smartMeasureFactory.IsCircleLine(lineShape);
Measure measure;
if(isCircleLine){
    //执行点到圆弧圆心的距离测量
    measure =smartMeasureFactory.CreatePntCircleLineDistanceMeasure(pntShape, lineShape);
}else{
    //执行点到圆弧最近距离测量
    measure =smartMeasureFactory.CreatePntLineDistanceMeasure(pntShape, lineShape);;
}
                        
角度测量
  • 根据传递的坐标值(x,y)获取拾取到的线、面对象
  • 记录并设置拾取到的对象的预选状态
  • 根据拾取到的对象类型执行角度测量
//例 面面角度测量
1、记录拾取对象;
SFace firstFaceShape = GetPickShape( x,  y);
SFace secondFaceShape = GetPickShape( x,  y);
2、判断是否是平面,只有平面可以进行角度测量
bool isPlaneFace1 =smartMeasureFactory.IsPlaneFace(firstFaceShape);
bool isPlaneFace2 = smartMeasureFactory.IsPlaneFace(secondFaceShape);
Measure measure;
if(isPlaneFace1 && isPlaneFace2){
    //执行面面角度测量
    measure = smartMeasureFactory.CreateFaceFaceAngleMeasure(firstFaceShape, secondFaceShape);
}
                        
IE浏览器集成OCX控件示例页面:IE OCX Demo。请使用IE浏览器打开